﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using KaartenLib;

namespace WindowsFormsApplication2
{
    public partial class ManueelIngevenOpdrachtForm : Form
    {
        public DatabaseActies dbActies;
        public AanmaakForm1 aanmaak;
        public List<Kaart> kaarten;
        public bool ok = false;
        public int aantalKeer;

        public ManueelIngevenOpdrachtForm(ref DatabaseActies dbActies)
        {
            this.dbActies = dbActies;
            this.aantalKeer = dbActies.Maxscore;
            kaarten = new List<Kaart>();
            InitializeComponent(); 
            checkMoeilijkheid();                       
        }

        private void checkMoeilijkheid()
        {
            if (dbActies.Moeilijkheid>= 2)
            {
                lblKaart3.Visible = true;
                cmbKaart3Soort.Visible = true;
                cmbKaart3Waarde.Visible = true;
                this.Size = new System.Drawing.Size(500,210);
                this.buttonBack.Location = new System.Drawing.Point(267, 134);
                this.btnRegistreerOefening.Location = new System.Drawing.Point(371, 134);
            }
            if (dbActies.Moeilijkheid == 3)
            {
                lblKaart4.Visible = true;
                cmbKaart4Soort.Visible = true;
                cmbKaart4Waarde.Visible = true;
                this.Size = new System.Drawing.Size(500, 245);
                this.buttonBack.Location = new System.Drawing.Point(267, 169);
                this.btnRegistreerOefening.Location = new System.Drawing.Point(371, 169);
            }
        }

        private void btnRegistreerOefening_Click(object sender, EventArgs e)
        {
            bool ok = true;
            if (cmbKaart1Soort.SelectedIndex == -1 || cmbKaart2Soort.SelectedIndex == -1
                || cmbKaart1Waarde.SelectedIndex == -1 || cmbKaart2Waarde.SelectedIndex == -1)
            {
                ok = false;
                MessageBox.Show("Kies voor elke kaart een geldige soort en waarde aub!");
            }
            else if (dbActies.Moeilijkheid >= 2)
            {
                if (cmbKaart3Soort.SelectedIndex == -1 || cmbKaart3Waarde.SelectedIndex == -1)
                {
                    ok = false;
                    MessageBox.Show("Kies voor elke kaart een geldige soort en waarde aub!");
                }
            }
            else if (dbActies.Moeilijkheid == 3)
            {
                if (cmbKaart4Soort.SelectedIndex == -1 || cmbKaart4Waarde.SelectedIndex == -1)
                {
                    ok = false;
                    MessageBox.Show("Kies voor elke kaart een geldige soort en waarde aub!");
                }
            }
            
            if(ok)
            {

                Oefening oef = new Oefening();
                Kaart k = new Kaart();
                k.Soort = checkKaartSoort(cmbKaart1Soort.SelectedItem as String);
                k.Waarde = checkKaartWaarde(Convert.ToInt16(cmbKaart1Waarde.SelectedItem));
                Console.Write(k.Soort + " " + k.Waarde);

                Kaart k2 = new Kaart();
                k2.Soort = checkKaartSoort(cmbKaart2Soort.SelectedItem as String);
                k2.Waarde = checkKaartWaarde(Convert.ToInt16(cmbKaart2Waarde.SelectedItem));

                kaarten.Add(k);
                kaarten.Add(k2);

                if (dbActies.Moeilijkheid >= 2)
                {
                    Kaart k3 = new Kaart();
                    k3.Soort = checkKaartSoort(cmbKaart3Soort.SelectedItem as String);
                    k3.Waarde = checkKaartWaarde(Convert.ToInt16(cmbKaart3Waarde.SelectedItem));
                    kaarten.Add(k3);
                }
                if (dbActies.Moeilijkheid == 3)
                {
                    Kaart k4 = new Kaart();
                    k4.Soort = checkKaartSoort(cmbKaart4Soort.SelectedItem as String);
                    k4.Waarde = checkKaartWaarde(Convert.ToInt16(cmbKaart4Waarde.SelectedItem));
                    kaarten.Add(k4);
                }

                oef.Kaartenlijst = kaarten;
                dbActies.Oefeningen.Add(oef);
                aanmaak.aantalOefeningen++;
                this.Hide();
                if (aanmaak.aantalOefeningen == dbActies.Maxscore)
                {
                    aanmaak.opdrachtIngevoerd();
                }
                else
                {
                    ManueelIngevenOpdrachtForm f = new ManueelIngevenOpdrachtForm(ref dbActies);
                    f.aanmaak = this.aanmaak;
                    f.StartPosition = FormStartPosition.CenterParent;
                    f.Show();
                }                
            }
        }

        #region check KaartSoort en waardes
        private KaartenLib.KaartSoort checkKaartSoort(string soort)
        {
            KaartSoort s;
            if (soort.Equals("Harten"))
            {
                s = KaartSoort.Harten;
            }
            else if (soort.Equals("Klaveren"))
            {
                s = KaartSoort.Klaveren;
            }
            else if (soort.Equals("Ruiten"))
            {
                s = KaartSoort.Ruiten;
            }
            else
            {
                s = KaartSoort.Schoppen;
            }

            return s;
        }

        private KaartenLib.KaartWaarde checkKaartWaarde(int waarde)
        {
            KaartWaarde w = KaartWaarde.Aas;

            switch (waarde)
            {
                case 1:
                    w = KaartWaarde.Aas;
                    break;
                case 2:
                    w = KaartWaarde.Twee;
                    break;
                case 3:
                    w = KaartWaarde.Drie;
                    break;
                case 4:
                    w = KaartWaarde.Vier;
                    break;
                case 5:
                    w = KaartWaarde.Vijf;
                    break;
                case 6:
                    w = KaartWaarde.Zes;
                    break;
                case 7:
                    w = KaartWaarde.Zeven;
                    break;
                case 8:
                    w = KaartWaarde.Acht;
                    break;
                case 9:
                    w = KaartWaarde.Negen;
                    break;
                case 10:
                    w = KaartWaarde.Tien;
                    break;
                case 11:
                    w = KaartWaarde.Boer;
                    break;
                case 12:
                    w = KaartWaarde.Dame;
                    break;
                case 13:
                    w = KaartWaarde.Heer;
                    break;
            }
            return w;
        }
        #endregion

        private void buttonBack_Click(object sender, EventArgs e)
        {
            this.Hide();
        }
       

    //TODO als eerste cmbBox kaart is gekozen, die uit selecte van andere cmb's halen
    }
    
}
